草庐IT

Python Django 模板 : Iterate Through List

全部标签

c++ - 为什么我的函数不跳过尝试解析为不兼容的模板函数,而是默认解析为常规函数?

这个问题在这里已经有了答案:Whycan'tatemplatefunctionresolveapointertoaderivedclasstobeapointertoabaseclass(1个回答)关闭8年前。std::stringnonSpecStr="nonspecializedfunc";std::stringconstnonTemplateStr="nontemplatefunc";classBase{};classDerived:publicBase{};templatestd::stringfunc(T*i_obj){(*i_obj)+=1;returnnonSpecStr

c++ - 模板和类型转换

我用模板创建了一个矩阵类:templateclassMatrix{static_assert(std::is_arithmetic::value,"");public:Matrix(size_tn_rows,size_tn_cols);Matrix(size_tn_rows,size_tn_cols,constT&value);//Functions//OperatorsMatrix&operator*=(constT&value)private:size_trows;size_tcols;std::vectordata;};我创建了以下两个(外部)运算符来将我的矩阵与数字相乘://I

c++ - 简化复杂的 C++ 模板符号

我正在开发调试/内存工具。我想显示来自C++的符号,问题是它们非常冗长。目前我只使用__cxa_demangle,但由于包含默认模板参数,这通常会产生超过500个字符的巨大字符串。clang++在报告符号时显然可以做一些聪明的事情,我有什么办法可以利用它吗?举个简单的例子,让我们来看:std::map,std::allocator>>::find(std::stringconst&)这显然可以报告为:std::map::find(std::stringconst&)..如果我有足够智能的工具。很明显,如果没有额外的知识(比如最初使用的包含-我可能会得到这些),这通常很难做到,但我将不胜

c++ - 在模板结构外重载运算符

我有以下代码:#include#includeusingnamespacestd;templatestructCMPLX{FRe,Im;struct_printnice{FRe,Im;stringsep;_printnice(constF&Re,constF&Im,conststring&sep):Re(Re),Im(Im),sep(sep){}};CMPLX(FRe,FIm):Re(Re),Im(Im){}_printnicePrintNice(conststring&sep="\t"){return_printnice(Re,Im,sep);}};templateostream&o

c++ - 模板函数调用被函数混淆,在模板之前声明了错误的签名

GCC4.6不接受以下代码:voidF(intx,chary){}templatevoidG(Tt){F(t);}voidF(intx){}intmain(){G(5);return0;}应该是吗?如果没有,有没有人有变通办法的好主意?发生这种情况的真实场景是G是用于解决特定类型问题的库的一部分,需要一个名为F的用户提供的辅助函数。但是,对于不同类型的问题,F采用不同数量的参数。F的几个示例实现随库一起提供。发生的事情是,根据客户端使用的#include-order,只有“错误种类”的F可能在模板声明时可见,然后GCC放弃,没有等到用户提供,正确,F已定义。即使模板实例化发生在正确的F

c++ - 函数模板只接受双向迭代器或指针

我需要一个函数模板来接受两个可以是指针的迭代器。如果这两个参数是random_access迭代器,我希望返回类型是的对象std::iterator输入否则std::iterator类型。我也想让代码拒绝如果参数既不是双向迭代器也不是指针,则进行编译。我不能依赖第三方库,例如提升你能帮我解决这个函数的签名问题,让它接受双向迭代器和指针,但不能说是input_iterator、output_iterator、forward_iterators。我能想到的部分解决方案如下templateTfoo(Titer1,Titer2){constTtmp1=reverse_iterator(iter1

C++ - 模板特化和部分特化

我一直在Internet和stackoverflow上寻找具体答案,但似乎找不到。我必须创建一个通用类,然后实现特定功能。我的具体指示是:您需要使用模板表达式参数和模板类特化和部分特化。我有一个模板类:templateclassZ{T**array[x][y];public:Z();voidprint();//andothermethods};我需要:1)只有x=2和y=2的Z需要有一个公共(public)方法voidJ()2)对于x=2和y=2的字符Z,J会做一些事情;对于其他一切,它会做其他事情3)只有当T是char时,Z才会将数组初始化为某个值。其他一切都是0当然,这是可行的:t

c++ - 我应该如何递归调用模板函数?

我正在尝试用C++创建一个树类我不确定在使用递归时应该如何使用模板。例如我有以下功能:templatevoiddestroyTree(typenameAVLTree::Node*element){if(!element){return;}destroyTree(element->getLeft());destroyTree(element->getRight());deleteelement;}或者应该是:templatevoiddestroyTree(typenameAVLTree::Node*element){if(!element){return;}destroyTree(ele

c++ - 函数签名的专用模板

在该测试代码中:#include#includeusingnamespacestd;templateclassSignal;templateclassSignal{public:Signal(T(*ptr)(U)){}};voidPrint(stringconst&str){coutsig=&Print;return0;}为什么我要写templateclassSignal;?为什么我必须指定它? 最佳答案 您不必做您正在做的事情,但这是最灵活的方法。具有特化的单参数模板如下所示:在一种类型上参数化的模板...templatestru

c++ - 函数重载和模板推导优先级

考虑以下函数声明:templatef(constT&x);//Version1templatef(constMyClass&x);//Version2如果我用一个与MyClass无关的类型调用f,将调用第一个版本。如果我用MyClass类型调用f(无论模板参数类型是什么),那么将调用第二个版本。但是现在,考虑一下:templateMyDerivedClass:publicMyClass{};将为MyDerivedClass类型调用什么版本的函数? 最佳答案 这在标准的第13.3节中进行了处理。第13.3/1段指出:Eachofthe